The present invention relates generally to the field of software development, and more particularly to software testing.
Software is developed for a variety of purposes, typically to meet client requirements, a perceived need, or for personal use. Software development generally employs one of two different software development methodologies, either a software development life cycle or an agile methodology to create software through the development of source code (i.e., a collection of computer instructions written in a computer language specifying actions to be performed by a computer device to achieve requirements). The life cycle methodology develops software through a detailed plan describing the development, maintenance and replacement of software at distinct phases, such as in a waterfall, spiral, or incremental development plan. The agile methodology develops software through a process of incremental iterations, where design, construction, and development may occur simultaneously, such as in continuous integration, rapid application development, and adaptive software development. For example, modifications to software are incorporated as updates are made, allowing for continuous improvement with rapid and flexible responses to modification.
Continuous integration, as well as other types of agile software development, employ an aspect of software configuration management referred to as revision control (e.g., may also be referred to as source control or version control). Revision control may be implemented through a centralized repository where the source code used to build a specific application or component (e.g., also referred to as the code base) is stored for management and tracking. When computer programmers modify source code under revision control, the latest source code is first retrieved from revision control (e.g., checking out the source code as a working copy). Modifications may then be made to the working copy of the source code but do not take effect until the working copy is checked in or committed back into the central repository. Once the working copy of the source code is committed, revision control manages and tracks the modifications to the committed source code by assigning a unique identifier. The assignment of the unique identifier to the newly committed source code creates a new revision (e.g., may assign a revision level through lettering, numbers, date, etc.), thus enabling multiple revisions of similar source code to be kept (e.g., previous revisions of the source code without current revision modifications incorporated are kept). Revision control then recognizes the most recently committed source code as the latest revision from which subsequent modifications will be made. At any point after modifications are committed, software testing may be performed to verify requirements (e.g., test cases for functionality) and to aid in eliminating unforeseen errors (e.g., structure, syntax, dataflow) that may have been incorporated by the modification to the source code. When failures result, additional software testing is performed to identify the source of the error.